From 91b2f8b8b2336686f6e4b70e2111f0b852909494 Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Tue, 28 Mar 2006 13:40:30 +0100 Subject: [PATCH] SVM only patch to fix location of PIO request RIP update. Fixes booting of win2003 server, and various CD installation failures. Signed-off-by: Tom Woller --- xen/arch/x86/hvm/svm/svm.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c index ea4138f856..dcecfda39f 100644 --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -1263,11 +1263,6 @@ static void svm_io_instruction(struct vcpu *v, struct cpu_user_regs *regs) /* Need the original rip, here. */ addr = svm_get_io_address(vmcb, regs, dir, real); - /* - * On SVM, the RIP of the intruction following the IN/OUT is saved in - * ExitInfo2 - */ - vmcb->rip = vmcb->exitinfo2; /* "rep" prefix */ if (info.fields.rep) @@ -1300,6 +1295,8 @@ static void svm_io_instruction(struct vcpu *v, struct cpu_user_regs *regs) else count = (addr & ~PAGE_MASK) / size; } + else + vmcb->rip = vmcb->exitinfo2; send_pio_req(regs, port, count, size, addr, dir, 1); } -- 2.30.2